// 版权所有2009 Go作者。保留所有权利。
// 此源代码的使用受BSD样式
// 许可证的约束，该许可证可以在许可证文件中找到。

package obj

import (
	"cmd/internal/goobj"
	"cmd/internal/src"
)

// AddImport将一个包添加到导入包的列表中。
func (ctxt *Link) AddImport(pkg string, fingerprint goobj.FingerprintType) {
	ctxt.Imports = append(ctxt.Imports, goobj.ImportedPkg{Pkg: pkg, Fingerprint: fingerprint})
}

func linkgetlineFromPos(ctxt *Link, xpos src.XPos) (f string, l int32) {
	pos := ctxt.PosTable.Pos(xpos)
	if !pos.IsKnown() {
		pos = src.Pos{}
	}
	// TODO（gri）应该使用相对行号还是绝对行号？
	return pos.SymFilename(), int32(pos.RelLine())
}

// getFileIndexAndLine返回文件索引（CU的本地索引）和位置的行号。
func getFileIndexAndLine(ctxt *Link, xpos src.XPos) (int, int32) {
	f, l := linkgetlineFromPos(ctxt, xpos)
	return ctxt.PosTable.FileIndex(f), l
}
